package com.taobao.ic.notify;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger;

import com.taobao.hsf.notify.client.MessageListener;
import com.taobao.hsf.notify.client.MessageStatus;
import com.taobao.hsf.notify.client.message.Message;
import com.taobao.item.notify.ItemNotifyAnalytic;
import com.taobao.item.notify.ItemNotifyResult;
import com.taobao.item.notify.ItemPublishNotifyResult;
import com.taobao.item.notify.ItemUpdateNotifyResult;

public class ItemNotifyListener implements MessageListener {
	
	private Logger log = Logger.getLogger(ItemNotifyListener.class);
	
	public void receiveMessage(Message message, MessageStatus status) {
		try {
			List<ItemNotifyResult> results = ItemNotifyAnalytic.build(message);
			if(CollectionUtils.isEmpty(results)){
				return;
			}
			for(ItemNotifyResult result : results){

//				if(result instanceof ItemPublishNotifyResult){
//					ItemPublishNotifyResult pubRes = (ItemPublishNotifyResult)result;
//					log.warn(String.format(
//							"action=%s;msgType=%s;itemId=%s;userType=%s;itemDo=[%s]",
//							"publish", result.getMessage().getInfo().getMsgType(), pubRes.getItemId(),
//							pubRes.getUserType(), pubRes.getItem()));
//				}else if(result instanceof ItemUpdateNotifyResult){
//					ItemUpdateNotifyResult updRes = (ItemUpdateNotifyResult)result;
//					log.warn(String.format(
//							"action=%s;msgType=%s;itemId=%s;userType=%s;itemUpdateDo=[%s]",
//							"update", result.getMessage().getInfo().getMsgType(),updRes.getItemId(),
//							updRes.getUserType(), updRes.getItemUpdate()));
//				}

				if(result instanceof ItemPublishNotifyResult){
					ItemPublishNotifyResult pubRes = (ItemPublishNotifyResult)result;
					log.warn(String.format(
							"action=%s;msgType=%s;itemId=%s;userType=%s;msgId=%s",
							"publish", result.getMessage().getInfo().getMsgType(), pubRes.getItemId(),
							pubRes.getUserType(), pubRes.getMessage().getInfo().getMessageId()));
				}else if(result instanceof ItemUpdateNotifyResult){
					ItemUpdateNotifyResult updRes = (ItemUpdateNotifyResult)result;
					log.warn(String.format(
							"action=%s;msgType=%s;itemId=%s;userType=%s;msgId=%s",
							"update", result.getMessage().getInfo().getMsgType(),updRes.getItemId(),
							updRes.getUserType(), updRes.getMessage().getInfo().getMessageId()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
